package map;

import javax.swing.*;
import java.util.HashMap;
import java.util.Map;

/***
 * java.util.Map  查找表
 * Map体现的样子是一个多行两列的表格 其中左列称为key 右列称为value
 * Map总是根据key获取对应的value。
 * Map要求key不允许重复（key的equals方法作为判定重复的依据）
 *
 * 常用实现类：
 * java.util.HashMap, 散列表 当今查询速度最快的数据结构
 */
public class MapDemo1 {
    public static void main(String[] args) {
        Map<String, Integer> map = new HashMap<>();
        /*
         put(K k, V v)
         将一组键值存入Map 因为Map要求不允许又重复的key 因此若使用
         已有的key存放value那么就是替换value操作 此时方法返回值为被替换的value
         否则返回null。
         */
        Integer v = map.put("语文",10);
        /**
         * 若是value是包装类 那么接收时避免用进本类型 否则若返回值为null时
         * 自动拆箱就会引发空指针异常
         */
        System.out.println(v);
        map.put("数学",20);
        map.put("英语",30);
        map.put("化学",40);
        map.put("物理",50);
        System.out.println(map);

        v = map.put("语文",50);
        System.out.println(v);//被替换的值
        System.out.println(map);//覆盖原来的值
        /*
         V get(Object k)
           获取key对应的value 不存在则返回null
         */
        v = map.get("数学");
        System.out.println("数学"+v);
        v = map.get("体育");
        System.out.println("体育"+v);
        /*
         remove(key)
         删除指定的key 并且对应的value一起删掉  返回值是被删掉的
         */
        v = map.remove("英语");
        System.out.println(v);
        System.out.println(map);
        /*
        map的长度
         */
        System.out.println(map.size());
        /*
        判断map中有没有给定的值
         */
        boolean bk = map.containsKey("英语");
        System.out.println(bk);
        boolean cv = map.containsValue(50);
        System.out.println(cv);
    }
}
